/**
 * Copyright 2010 Eric Taix Licensed under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable
 * law or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 */
package org.jared.synodroid.common.action;

import org.jared.synodroid.common.SynoServer;
import org.jared.synodroid.common.data.Task;
import org.jared.synodroid.common.protocol.ResponseHandler;

/**
 * General interface to execute an action on the Synology's server
 * 
 * @author Eric Taix (eric.taix at gmail dot com)
 */
public interface SynoAction {

  /**
   * Execute the action on the specific server
   * 
   * @param activityP
   * @param serverP
   */
  public void execute(ResponseHandler handlerP, SynoServer serverP) throws Exception;

  /**
   * Return the name of the action
   * 
   * @return
   */
  public String getName();

  /**
   * Return true if a toast must be shown when this action is executed
   * 
   * @return
   */
  public boolean isToastable();

  /**
   * Return the resource id to use when a toast must be shown
   * 
   * @return
   */
  public int getToastId();

  /**
   * Return the task associated with this task. May return null if no
   * specific task is associated.
   * 
   * @return
   */
  public Task getTask();
}
